#!/usr/bin/evn python
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   文件名称 :     kasdska
   文件功能描述 :   功能描述
   创建人 :       小钟同学
   创建时间 :          2021/12/1
-------------------------------------------------
   修改描述-2021/12/1:         
-------------------------------------------------
"""

import grpc
from example.stubs import hello_pb2_grpc
from example.stubs import hello_pb2
# from typing import Any, Dict
# 引入到这个的会报错# NamedTuple
# from google.protobuf import json_format, symbol_database
from grpcframe.zyxgrpc.compose_parse import ComposeParseRequestContext
from pydantic import BaseModel
# 这样代理方式也可以实现我们的类似flask中一个代理，这样就可以随意再任何地方导入这个进行调用了
from grpcframe.zyxgrpc.globals import grequest
# 全局类似flaskrequest的上下文的实现


class DayeGreeter5(hello_pb2_grpc.GreeterServicer, ComposeParseRequestContext):

    class RequestParse(BaseModel):
        name: str
        sada:str

    # 实现 proto 文件中定义的 rpc 调用
    def SayHello(self, request, context):
        # 返回是我们的定义的响应体的对象
        return hello_pb2.HelloReply(message='hello {msg}'.format(msg=request.name))

    def SayHelloAgain(self, request, context):
        # 解析请求参信息
        # 校验请求的参数信息-----------也可以在make_request_context的时候，进行上下文的全局代理的初始化
        with self.make_request_context(request,context):

            # 进行提交校验
            self.validation_request(self.RequestParse)

            sadas = self.parse_request_action(grequest)
            # print("flaskrequest",flaskrequest.)
            print("解析当前山修改",sadas)

            context.set_compression(grpc.Compression.Gzip)
            return hello_pb2.HelloReply(message='hello {msg}'.format(msg=request.name))
